#include<stdio.h>
#include<stdlib.h>
#include<gtk/gtk.h>
#include"gui.h"
#include"data_ops.h"

// 全局变量定义，与头文件声明一致
char current_admin[20] = {0};
 
int main(int argc, char *argv[]){
    // 初始化数据目录（仅需一次）
    init_data_dir();
    
    // 初始化GTK（仅需一次检查）
    if (!gtk_init_check(&argc, &argv)) {
        g_print("Failed to initialize GTK\n");
        return 1;
    }

    // 检查并创建默认管理员
    FILE *admin_file = fopen(ADMIN_FILE, "rb+");
    if (!admin_file) {
        admin_file = fopen(ADMIN_FILE, "wb+");
    }

    if (admin_file) {
        fseek(admin_file, 0, SEEK_END);
        long file_size = ftell(admin_file);
        rewind(admin_file);

        if (file_size == 0) {
            Admin default_admin;
            memset(&default_admin, 0, sizeof(Admin));
            strncpy(default_admin.username, "admin", sizeof(default_admin.username)-1);
            // 使用SHA256加密存储密码"123456"
            const char *default_pwd = "123456";
            GChecksum *checksum = g_checksum_new(G_CHECKSUM_SHA256);
            g_checksum_update(checksum, (const guchar*)default_pwd, strlen(default_pwd));
            const gchar *hashed_pwd = g_checksum_get_string(checksum);
            strncpy(default_admin.password, hashed_pwd, sizeof(default_admin.password)-1);
            g_checksum_free(checksum);
            
            fwrite(&default_admin, sizeof(Admin), 1, admin_file);
            fflush(admin_file);
        }
        fclose(admin_file);
    } else {
        g_print("错误：无法打开/创建 %s\n", ADMIN_FILE);
    }
    
    // 显示欢迎窗口（会员刷卡界面）
    show_welcome_window();
    
    // 启动GTK主循环
    gtk_main();
    
    // 注释：如果需要实现读卡器关闭功能，请补充card_reader_close定义
    // card_reader_close();
    
    return 0;
}
